// 冒泡排序
// var sortArray = function(nums) {
//     // 外层每趟循环，找出一个最大的数
//     for(let i = 0; i < nums.length; i++){
//       // 判断每次是否需要交换
//       for(let j = 0; j < nums.length - 1 - i; j++){
//         if(nums[j] > nums[j + 1]){
//           // ES6 交换两个变量
//           [nums[j], nums[j + 1]] = [nums[j + 1], nums[j]]
//           // ES5 交换两个变量
//           // const temp = nums[j]
//           // nums[j] = nums[j + 1]
//           // ums[j + 1] = nums[j]
//         }
//       }
//     }
//     return nums
// };
// 选择排序
// var sortArray = function(nums) {
//     const length = nums.length
//     let minIndex = 0
//     for(let i = 0; i < length - 1; i++){
//         minIndex = i
//         for(let j = i; j < length; j++){
//             if(nums[minIndex] > nums[j]){
//                 minIndex = j
//             }
//         }
//         if(i !== minIndex){
//             [nums[i], nums[minIndex]] = [nums[minIndex], nums[i]]
//         }
//     }
//     return nums
// };
// 插入排序
// var sortArray = function(nums) {
//     const length = nums.length
//     // 需要从1开始
//     for(let i = 1; i < length; i++){
//         let j = i
//         let tempValue = nums[i]  // 获取要比较的值
//         while(j > 0 && nums[j - 1] > tempValue){
//             nums[j] = nums[j - 1]
//             j--
//         }
//         nums[j] = tempValue
//     }
//     return nums
// };

//快速排序
var sortArray = function(nums) {
    if( nums.length <= 1 ) return nums
    let left = []
    let right = []
    let pivotIndex  = Math.floor(nums.length / 2)
    let pivotValue =  nums.splice(pivotIndex,1)[0]
    for(let i = 0; i < nums.length; i++ ){
        if(nums[i] > pivotValue){
            right.push(nums[i])
        }else{
            left.push(nums[i])
        }
    }
    return sortArray(left).concat(pivotValue,sortArray(right))
};